package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

/**
 * 集合之间的操作
 * collection.addAll(Collection collection1)  并集 collection集合当中的元素会改变，而不是返回新的集合
 * collection.removeAll(Collection collection1) 差集  collection集合当中的元素会改变，而不是返回新的集合
 * collection.retainAll(Collection collection1)  交集 collection集合当中的元素会改变，而不是返回新的集合
 */
public class CollectionDemo3 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("java");
        c.add("iOS");
        c.add("android");
        System.out.println("c原始数据:" + c);

        Collection c2 = new HashSet();
        c2.add("web");
        c2.add("android");
        c2.add("iOS");
        System.out.println("c2原始数据:" + c2);

        /*
        * 集合之间的操作
        * addAll(Collection c)  并集
        * removeAll(Collection c)  差集
        * retainAll(Collection c)  交集
         */

        System.out.println("-------------并集addAll()  会改变集合元素");
        // 由于c集合是ArrayList集合，有序不重复 所以c2当中的所有元素都可以存入在c当中
        c.addAll(c2);
        System.out.println("c.addAll(c2):" + c);

        // 由于c2集合是hashSet集合，无序不重复 所以c当中的重复元素无法存入在c2当中
        c2.addAll(c);
        System.out.println("c2.addAll(c):"+ c2);

        Collection c3 = new ArrayList();
        c3.add("java");
        c3.add("php");
        c3.add("android");

        System.out.println("-------------交集retainAll()");
        System.out.println("c3原始数据:" + c3);
        System.out.println("c的数据:" + c);

        c.retainAll(c3);
        System.out.println("c.retainAll(c3)：" + c);

        c3.retainAll(c);
        System.out.println("c3.retainAll(c)：" + c3);
        System.out.println(c);

        // 差集
        System.out.println("---------差集removeAll()");
        System.out.println("c的数据:" + c);
        System.out.println("c3的数据:" + c3);
        c.removeAll(c3);
        System.out.println("c.removeAll(c3)后c的集合:" + c);
        c3.removeAll(c);
        System.out.println("c3.removeAll(c):" + c3);

    }
}
